
/**
 * 进行大页内存的测试
 * 
* 源文件名：LargeMemoryTest.java
* 文件版本：1.0.0
* 创建作者：liujun
* 创建日期：2016年11月29日
* 修改作者：liujun
* 修改日期：2016年11月29日
* 文件描述：TODO
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public class LargeMemoryTwoTest {

    public static void main(String[] args) {

        System.out.println("input size:" + args[0]);
        System.out.println("input size:" + args[1]);

        int arraySizeOne = Integer.MAX_VALUE / 16;
        int arraySizeTwo = 2048;

        if (null != args[0]) {
            arraySizeOne = Integer.parseInt(args[0]);
            arraySizeTwo = Integer.parseInt(args[1]);
        }

        long startTime = System.currentTimeMillis();

        int[][] largeMemory = new int[arraySizeOne][arraySizeTwo];

        for (int i = 0; i < arraySizeOne; i++) {
            for (int j = 0; j < arraySizeTwo; j++) {
                largeMemory[i][j] = (int) (System.nanoTime()
                        % Integer.MAX_VALUE);
            }
        }

        long startTime2 = System.currentTimeMillis();

        int[][] largeMemoryRsp = new int[arraySizeOne][arraySizeTwo];

        for (int i = 0; i < arraySizeOne; i++) {
            for (int j = 0; j < arraySizeTwo / 2; j++) {
                for (int k = arraySizeTwo - 1; k >= arraySizeTwo / 2; k--) {
                    largeMemoryRsp[i][j] = largeMemoryRsp[i][j]
                            * largeMemoryRsp[i][k];
                }
            }
        }

        long end = System.currentTimeMillis();

        System.out.println(
                "put value need time:" + (startTime2 - startTime) / 1000f);
        System.out.println(
                "count value need time :" + (end - startTime2) / 1000f);
        System.out.println("all value need time:" + (end - startTime) / 1000f);

    }

}
